<?php

class Posts extends CI_Controller {
    
    function index () {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Загружаем модель Дополнительных функций
            $this->load->model('Func_model', '', TRUE);
            
            $part = 'posts';
            
            //Загружаем сгенерированное меню
            $table['menu'] = $this->Func_model->menu_posts($part);
            
            //Считаем последние 20 записей
            $content = $this->Posts_model->get_last_ten_posts();
            
            //Массив всех разделов, где Индекс ячейки - id
            $posts_parts = $this->Posts_model->get_parts();
            
            //Генерация таблицы
            $option = array(
                'open' => 'Открыто',
                'close' => 'Закрыто'
            );
            
            $tbl = '<table class="outtable" border="1">
                     <tr><td>id</td><td>Автор</td><td>Название</td><td>Комментирование</td><td>Раздел</td><td>Комментариев</td><td>Дата записи</td><td>&nbsp;</td><td>&nbsp;</td></tr>';
            foreach ($content as $row)
                $tbl .= '<tr><td>' . $row['posts_id'] . '</td><td><a href="' . site_url('users/edit/' . $row['posts_author_id']) . '">' . $row['posts_author'] . '</td>
                         <td>' . $row['posts_title'] . '</td><td>' . $option[$row['posts_com_status']] . '</td>
                         <td>' . $posts_parts[$row['posts_parent']] . '</td><td>' .$row['posts_com_count']. '</td>
                         <td>' . $row['posts_date'] . '</td>
                         <td><a href="' . site_url('posts/editpost/' . $row['posts_id']) . '">Edit</a></td>
                         <td><a href="' . site_url('posts/droppost/' . $row['posts_id']) . '">Drop</a></td></tr>';
            $tbl .= '</table>';
            $table['table'] = $tbl;
            $table['add'] = site_url('posts/addpost');
            
            //Загружаем отображение подвала 
            $this->load->view('temp_posts', $table);
            
            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
    
    function parts() {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Загружаем модель Дополнительных функций
            $this->load->model('Func_model', '', TRUE);
            
            $part = 'parts';
            
            //Загружаем сгенерированное меню
            $table['menu'] = $this->Func_model->menu_posts($part);
            
            //Считаем последние 20 записей
            $content = $this->Posts_model->get_last_ten_parts();
            
            $tbl = '<table class="outtable" border="1">
                     <tr><td>id</td><td>Название</td><td>Постов</td><td>&nbsp;</td><td>&nbsp;</td></tr>';
            foreach ($content as $row)
                $tbl .= '<tr><td>' . $row['pparts_id'] . '</td><td>' . $row['pparts_name'] . '</td><td>' . $row['pparts_posts_count'] . '</td>
                         <td><a href="' . site_url('posts/editpart/' . $row['pparts_id']) . '">Edit</a></td>
                         <td><a href="' . site_url('posts/droppart/' . $row['pparts_id']) . '">Drop</a></td></tr>';
            $tbl .= '</table>';
            $table['table'] = $tbl;
            $table['add'] = site_url('posts/addpart');
            
            //Загружаем отображение отображения 
            $this->load->view('temp_posts', $table);
            
            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
    
    function addpart() {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем библиотеку Table
            $this->load->library('table');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Сборка данных для отображения
            $add['form'] = form_open();
            $data = array(
                array('Название:', form_input('pparts_name', $this->input->post('pparts_name'))),
                array('Описание:', form_textarea('pparts_title', $this->input->post('pparts_title'))),
                array('', form_submit('go', 'Добавить'))
            );
            $tmpl = array(
                'table_open' => '<table class="outtable" border="0">',
                'heading_cell_start' => '<td valign="top" align="left">',
                'heading_cell_end' => '</td>',
                'cell_start' => '<td valign="top" align="left">',
                'cell_end' => '</td>',
                'cell_alt_start' => '<td valign="top" align="left">',
                'cell_alt_end' => '</td>',
            );
            $this->table->set_template($tmpl);
            $add['form'] .= $this->table->generate($data);
            $add['form'] .= form_close();
            
            //Обработчик событий
            if (isset($_POST['pparts_name'])) {
                if ($this->input->post('pparts_name') == FALSE)
                    $add['error'] = 'Не заполнено поле "Название".';
                elseif ($this->input->post('pparts_title') == FALSE)
                    $add['error'] = 'Не заполнено поле "Описание".';
                else {
                    $data = array(
                        'pparts_name' => $this->input->post('pparts_name'),
                        'pparts_title' => $this->input->post('pparts_title')
                    );
                    $this->Posts_model->insert_one_parts($data);
                    $add['error'] = 'Успешно записано!';
                }
            }
            else
                $add['error'] = 'Пожалуйста, заполните все поля.';
            
            //Загружаем отображение Пользователи 
            $this->load->view('temp_posts_add', $add);
            
            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
    
    function addpost() {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем библиотеку Table
            $this->load->library('table');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Сборка данных для отображения
            $add['form'] = form_open();
            $option = array(
                'open' => 'Открыто',
                'close' => 'Закрыто',
            );
            $parent = $this->Posts_model->get_parts();
            $data = array(
                array('Название:', form_input('posts_title', $this->input->post('posts_title'))),
                array('Начало поста:', form_textarea('posts_description', $this->input->post('posts_description'))),
                array('Основная часть:', form_textarea('posts_content', $this->input->post('posts_content'))),
                array('Комментирование:', form_dropdown('posts_com_status', $option, $this->input->post('posts_com_status'))),
                array('Раздел:', form_dropdown('posts_parent', $parent, $this->input->post('posts_parent'))),
                array('', form_submit('go', 'Добавить'))
            );
            $tmpl = array(
                'table_open' => '<table class="outtable" border="0">',
                'heading_cell_start' => '<td valign="top" align="left">',
                'heading_cell_end' => '</td>',
                'cell_start' => '<td valign="top" align="left">',
                'cell_end' => '</td>',
                'cell_alt_start' => '<td valign="top" align="left">',
                'cell_alt_end' => '</td>',
            );
            $this->table->set_template($tmpl);
            $add['form'] .= $this->table->generate($data);
            $add['form'] .= form_close();
            
            //Обработчик событий
            if (isset($_POST['posts_title'])) {
                if ($this->input->post('posts_title') == FALSE)
                    $add['error'] = 'Не заполнено поле "Название".';
                elseif ($this->input->post('posts_description') == FALSE)
                    $add['error'] = 'Не заполнено поле "Начало поста".';
                elseif ($this->input->post('posts_content') == FALSE)
                    $add['error'] = 'Не заполнено поле "Основная часть".';
                else {
                    $user = $this->im_auth->auth_id();
                    $data = array(
                        'posts_author_id' => $user['users_id'],
                        'posts_author' => $user['users_login'],
                        'posts_title' => $this->input->post('posts_title'),
                        'posts_description' => $this->input->post('posts_description'),
                        'posts_content' => $this->input->post('posts_content'),
                        'posts_date' => date('Y-m-d H:i:s'),
                        'posts_com_status' => $this->input->post('posts_com_status'),
                        'posts_parent' => $this->input->post('posts_parent')
                    );
                    $this->Posts_model->insert_one_posts($data);
                    $this->Posts_model->update_posts_in_parts($data['posts_parent']);
                    $add['error'] = 'Успешно записано!';
                }
            }
            else
                $add['error'] = 'Пожалуйста, заполните все поля.';
            
            //Загружаем отображение Пользователи 
            $this->load->view('temp_posts_add', $add);
            
            //Загружаем отображение подвала 
            $this->load->view('bottom');
        }
    }
    
    function droppost($id, $drop = '0') {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем модель постов
            $this->load->model('Posts_model', '', TRUE);
            
             if ($drop == '0') {
                $vdrop['ask'] = 'Удалить запись #' . $id . '?';
                $vdrop['url_yes'] = site_url('posts/droppost/' . $id . '/yes');
                $vdrop['url_no'] = site_url('posts/droppost/' . $id . '/no');
                $vdrop['drop'] = $drop;
            }
            elseif ($drop == 'yes') {
                $vdrop['drop'] = $drop;

                $entrie = $this->Posts_model->get_one_posts($id);
                
                $this->Posts_model->drop_one_posts($id);
                
                $this->Posts_model->drop_posts_in_parts($entrie['0']['posts_parent']);

                redirect('/posts', 'refresh');
            }
            else {
                $vdrop['drop'] = $drop;
                redirect('/posts', 'refresh');
            }
            
            //Загружаем отображение удаления
            $this->load->view('temp_users_drop', $vdrop);

            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
    
    function droppart($id, $drop = '0') {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем модель постов
            $this->load->model('Posts_model', '', TRUE);
            
             if ($drop == '0') {
                $vdrop['ask'] = 'Удалить запись #' . $id . ' и все связанные посты и комментарии?';
                $vdrop['url_yes'] = site_url('posts/droppart/' . $id . '/yes');
                $vdrop['url_no'] = site_url('posts/droppart/' . $id . '/no');
                $vdrop['drop'] = $drop;
            }
            elseif ($drop == 'yes') {
                $vdrop['drop'] = $drop;
                
                $this->Posts_model->drop_one_parts($id);
                
                $this->Posts_model->drop_posts_where_parts($id);

                redirect('posts/parts', 'refresh');
            }
            else {
                $vdrop['drop'] = $drop;
                redirect('posts/parts', 'refresh');
            }
            
            //Загружаем отображение удаления
            $this->load->view('temp_users_drop', $vdrop);

            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        } 
    }
    
    function editpost($id) {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем библиотеку Table
            $this->load->library('table');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Получение данных из БД
            $content = $this->Posts_model->get_one_posts($id);
            
            if (!isset($_POST['posts_title'])) {
                $posts_title = $content['0']['posts_title'];
                $posts_description = $content['0']['posts_description'];
                $posts_content = $content['0']['posts_content'];
                $posts_com_status = $content['0']['posts_com_status'];
                $posts_parent = $content['0']['posts_parent'];
            } else {
                $posts_title = $this->input->post('posts_title');
                $posts_description = $this->input->post('posts_description');
                $posts_content = $this->input->post('posts_content');
                $posts_com_status = $this->input->post('posts_com_status');
                $posts_parent = $this->input->post('posts_parent');
            }
            
            //Обработчик событий
            if (isset($_POST['posts_title'])) {
                $data = array(
                    'posts_title'       => $posts_title,
                    'posts_description' => $posts_description,
                    'posts_content'     => $posts_content,
                    'posts_com_status'  => $posts_com_status
                );
                if ($posts_parent != $content['0']['posts_parent']) {
                    $data['posts_parent'] = $posts_parent;
                    //Удаляем из старого раздела
                    $this->Posts_model->drop_posts_in_parts($content['0']['posts_parent']);
                    //Записываем в новый раздел
                    $this->Posts_model->update_posts_in_parts($posts_parent);
                }
                $this->Posts_model->update_one_posts($id, $data);
                $edit['error'] = 'Успешно записано!';
            }
            else
                $edit['error'] = 'Отредактируйте требуемые поля.';
            
            //Сборка данных для отображения
            $edit['form'] = form_open();
            $option = array(
                'open' => 'Открыто',
                'close' => 'Закрыто',
            );
            $parent = $this->Posts_model->get_parts();
            $data = array(
                array('Название:', form_input('posts_title', $posts_title)),
                array('Начало поста:', form_textarea('posts_description', $posts_description)),
                array('Основная часть:', form_textarea('posts_content', $posts_content)),
                array('Комментирование:', form_dropdown('posts_com_status', $option, $posts_com_status)),
                array('Раздел:', form_dropdown('posts_parent', $parent, $posts_parent)),
                array('', form_submit('go', 'Изменить'))
            );
            $tmpl = array(
                'table_open' => '<table class="outtable" border="0">',
                'heading_cell_start' => '<td valign="top" align="left">',
                'heading_cell_end' => '</td>',
                'cell_start' => '<td valign="top" align="left">',
                'cell_end' => '</td>',
                'cell_alt_start' => '<td valign="top" align="left">',
                'cell_alt_end' => '</td>',
            );
            $this->table->set_template($tmpl);
            $edit['form'] .= $this->table->generate($data);
            $edit['form'] .= form_close();
            
            $edit['id'] = $id;
            
            //Загружаем отображение удаления
            $this->load->view('temp_users_edit', $edit);

            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
    
    function editpart($id) {
        
        $auth = $this->im_auth->auth_check(); //проверяем авторизован ли пользователь
        if ($auth != true) {
            redirect(site_url('/welcome/login'));
        } else {
            
            //Загружаем отображение шапки
            $this->load->view('top');
            
            //Загружаем библиотеку Table
            $this->load->library('table');
            
            //Загружаем модель Постов
            $this->load->model('Posts_model', '', TRUE);
            
            //Получение данных из БД
            $content = $this->Posts_model->get_one_parts($id);
            
            if (!isset($_POST['pparts_name'])) {
                $pparts_name = $content['0']['pparts_name'];
                $pparts_title = $content['0']['pparts_title'];
            } else {
                $pparts_name = $this->input->post('pparts_name');
                $pparts_title = $this->input->post('pparts_title');
            }
            
            //Обработчик событий
            if (isset($_POST['pparts_name'])) {
                $data = array(
                    'pparts_name'       => $pparts_name,
                    'pparts_title' => $pparts_title
                );
                $this->Posts_model->update_one_parts($id, $data);
                $edit['error'] = 'Успешно изменено!';
            }
            else
                $edit['error'] = 'Отредактируйте требуемые поля.';
            
            //Сборка данных для отображения
            $edit['form'] = form_open();
            $data = array(
                array('Название:', form_input('pparts_name', $pparts_name)),
                array('Описание:', form_textarea('pparts_title', $pparts_title)),
                array('', form_submit('go', 'Изменить'))
            );
            $tmpl = array(
                'table_open' => '<table class="outtable" border="0">',
                'heading_cell_start' => '<td valign="top" align="left">',
                'heading_cell_end' => '</td>',
                'cell_start' => '<td valign="top" align="left">',
                'cell_end' => '</td>',
                'cell_alt_start' => '<td valign="top" align="left">',
                'cell_alt_end' => '</td>',
            );
            $this->table->set_template($tmpl);
            $edit['form'] .= $this->table->generate($data);
            $edit['form'] .= form_close();
            
            $edit['id'] = $id;
            
            //Загружаем отображение удаления
            $this->load->view('temp_users_edit', $edit);

            //Загружаем отображение подвала 
            $this->load->view('bottom');
            
        }
    }
}

?>